home *** CD-ROM | disk | FTP | other *** search
- /******************************************************************************/
- /*
- Alessandro Levi Montalcini
- C.so Re Umberto 10
- 10121 Torino
- Italy
-
- Mr.Player's Apple Events Sample Code - June 1992
-
- WARNING: For the Apple Event routines to work,
- you must set the "Apple-Events Aware" flag
- in your application's 'SIZE' resource.
- */
- /******************************************************************************/
-
- #include "Player.h"
-
- OSErr GetMrPlayerPSN (ProcessSerialNumber *psn);
- OSErr SendEventToMrPlayer (long eventType, long eventID, long paramType, long paramID, long paramValue);
- OSErr SendOpenFileToMrPlayer (FSSpec *file);
-
- /******************************************************************************/
-
- void main(void)
- {
- ProcessSerialNumber psn;
- OSErr error;
-
- MaxApplZone(); /* initialize everything */
- InitGraf(&thePort);
- InitFonts();
- InitWindows();
- InitMenus();
- TEInit();
- InitCursor();
- InitDialogs(0L);
- FlushEvents(everyEvent,0);
-
- error = GetMrPlayerPSN(&psn); /* is Mr.Player installed ? */
- if(error) SysBeep(1); /* no - play system beep and quit */
- else /* yes - send sample apple events */
- {
- /* asynchronously play default system beep */
- error = SendEventToMrPlayer(kPlayerCreator, kAEvtBeep, typeVoid, 0L, 0L);
-
- /* asynchronously play sound resource with ID = 5 */
- error = SendEventToMrPlayer(kPlayerCreator, kAEvtPlay, typeShortInteger, kAEParmSndID, 5);
-
- /* asynchronously play sound resource with index = 3 */
- error = SendEventToMrPlayer(kPlayerCreator, kAEvtPlay, typeShortInteger, kAEParmSndIX, 3);
-
- /* stop playing sounds */
- error = SendEventToMrPlayer(kPlayerCreator, kAEvtStop, typeVoid, 0L, 0L);
-
- /* quit Mr.Player */
- error = SendEventToMrPlayer(kCoreEventClass, kAEQuitApplication, typeVoid, 0L, 0L);
- }
-
- ExitToShell(); /* return to Finder */
- }
-
- /******************************************************************************/
-
- OSErr GetMrPlayerPSN(ProcessSerialNumber *psn)
- {
- ProcessSerialNumber *result;
- OSErr error;
-
- error = Gestalt(kPlayerCreator, (long*)&result);
- if(error) return(error);
-
- *psn = *result;
- return(noErr);
- }
-
- /******************************************************************************/
-
- OSErr SendEventToMrPlayer(long eventType, long eventID, long paramType, long paramID, long paramValue)
- {
- ProcessSerialNumber psn;
- AppleEvent event, reply;
- AEAddressDesc address;
- short paramWord;
- OSErr error;
-
- error = GetMrPlayerPSN(&psn);
- if(error==noErr)
- {
- error = AECreateDesc(typeProcessSerialNumber, (Ptr)&psn, (Size)sizeof(ProcessSerialNumber), &address);
- if(error==noErr)
- {
- error = AECreateAppleEvent(eventType, eventID, &address, kAutoGenerateReturnID, kAnyTransactionID, &event);
- if(error==noErr)
- {
- switch(paramType)
- {
- case typeShortInteger:
- paramWord = (short)paramValue;
- error = AEPutParamPtr(&event, paramID, typeShortInteger, ¶mWord, (Size)sizeof(short));
- break;
- case typeLongInteger:
- error = AEPutParamPtr(&event, paramID, typeLongInteger, ¶mValue, (Size)sizeof(long));
- break;
- }
- if(error==noErr)
- {
- error = AESend(&event, &reply, kAENoReply, kAENormalPriority, kAEDefaultTimeout, (ProcPtr)0L, (ProcPtr)0L);
- if(error==noErr) (void)WakeUpProcess(&psn);
- }
- (void)AEDisposeDesc(&event);
- }
- (void)AEDisposeDesc(&address);
- }
- }
- return(error);
- }
-
- /******************************************************************************/
-
- OSErr SendOpenFileToMrPlayer(FSSpec *file)
- {
- ProcessSerialNumber psn;
- AppleEvent event, reply;
- AEAddressDesc address;
- AEDescList documents;
- OSErr error;
-
- error = GetMrPlayerPSN(&psn);
- if(error==noErr)
- {
- error = AECreateDesc(typeProcessSerialNumber, (Ptr)&psn, (Size)sizeof(ProcessSerialNumber), &address);
- if(error==noErr)
- {
- error = AECreateAppleEvent(kCoreEventClass, kAEOpenDocuments, &address, kAutoGenerateReturnID, kAnyTransactionID, &event);
- if(error==noErr)
- {
- error = AECreateList(0L, 0L, FALSE, &documents);
- if(error==noErr)
- {
- error = AEPutPtr(&documents, 1L, typeFSS, (Ptr)file, (Size)sizeof(FSSpec));
- if(error==noErr)
- {
- error = AEPutParamDesc(&event, keyDirectObject, &documents);
- if(error==noErr)
- {
- error = AESend(&event, &reply, kAENoReply, kAENormalPriority, kAEDefaultTimeout, (ProcPtr)0L, (ProcPtr)0L);
- if(error==noErr) (void)WakeUpProcess(&psn);
- }
- }
- (void)AEDisposeDesc(&documents);
- }
- (void)AEDisposeDesc(&event);
- }
- (void)AEDisposeDesc(&address);
- }
- }
- return(error);
- }
-
- /******************************************************************************/